package com.cyj.dream.core.util.email;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.mail.Mail;
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;
import com.cyj.dream.core.constant.Constant;

import java.util.Collection;
import java.util.List;

/**
 * @Description: 邮箱工具类
 * @BelongsProject: DreamChardonnay
 * @BelongsPackage: com.cyj.dream.core.util.email
 * @Author: ChenYongJia
 * @CreateTime: 2021-09-26 13:25
 * @Email: chen87647213@163.com
 * @Version: 1.0
 */
public class EmailUtil {

    /**
     * 发送单独邮件
     *
     * @param toUserAddress 收件人邮箱
     * @param title         标题
     * @param content       内容
     * @param isHtml        是否是html邮件
     * @param fileUrl       是否有文件--附件
     * @return void
     * @date 2021/7/9 11:16
     * @author ChenYongJia
     * @version 1.0
     */
    public static void EmilSendOne(String toUserAddress, String title, String content, boolean isHtml, String fileUrl) {
        // 是否含有附件
        if (!StrUtil.isEmpty(fileUrl)) {
            Mail.create(EmailUtil.setAccount())
                    .setTos(toUserAddress)
                    .setTitle(title)
                    .setContent(content)
                    .setHtml(isHtml)
                    .setFiles(FileUtil.file(fileUrl))
                    .send();
        } else {
            Mail.create(EmailUtil.setAccount())
                    .setTos(toUserAddress)
                    .setTitle(title)
                    .setContent(content)
                    .setHtml(isHtml)
                    .send();
        }
    }

    /**
     * 发送群发邮件
     *
     * @param toUserAddress 收件人邮箱集合
     * @param title         标题
     * @param content       内容
     * @param isHtml        是否是html邮件
     * @param fileUrl       是否有文件--附件
     * @return void
     * @date 2021/7/9 11:16
     * @author ChenYongJia
     * @version 1.0
     */
    public static void EmilSendGroup(Collection<String> toUserAddress, String title, String content, boolean isHtml, String fileUrl) {
        // 是否含有附件
        if (!StrUtil.isEmpty(fileUrl)) {
            MailUtil.send(EmailUtil.setAccount(), toUserAddress, title, content, isHtml, FileUtil.file(fileUrl));
        } else {
            MailUtil.send(EmailUtil.setAccount(), toUserAddress, title, content, isHtml);
        }
    }

    private static MailAccount setAccount() {
        MailAccount account = new MailAccount();
        // 邮件服务器的SMTP地址，可选，默认为smtp.<发件人邮箱后缀>
        account.setHost(Constant.EMIL_HOST);
        // 邮件服务器的SMTP端口，可选，默认25
        account.setPort(Constant.EMIL_PORT);
        // 设置是否需要用户名密码验证
        account.setAuth(Constant.EMIL_AUTH);
        // 发件人（必须正确，否则发送失败）
        account.setFrom(Constant.EMIL_FROM);
        // 用户名，默认为发件人邮箱前缀
        account.setUser(Constant.EMIL_USER);
        // 密码（注意，某些邮箱需要为SMTP服务单独设置授权码，详情查看相关帮助）
        account.setPass(Constant.EMIL_PASS);
        return account;
    }


    public static void main(String[] args) {
        EmilSendOne("qrlsc1106@163.com", "测试", "<h1>再说我骚我邮件轰炸了？</h1>", true, "d:/测试.txt");
        // 群发邮箱地址集合
        List<String> toUserAddress = CollUtil.newArrayList(
                "qrlsc1106@163.com");
        EmilSendGroup(toUserAddress, "测试", "<h1>测试邮件服务是否可以群发，收到此邮件请在微信群联系下小佳？</h1>", true, "d:/测试.txt");
    }


}
